#include #include #include using namespace std; const int ROWS = 15; const int COLUMNS = 10; const char BOMB = 162; const char MARKED = 14; const char DEFAULT = 178; const char EMPTY = ' '; const int BOMB_COUNT = 45; void initializeGameBoard(char gameBoard[][COLUMNS]); void displayGameBoard(char gameBoard[][COLUMNS]); void move(char gameBoard[][COLUMNS], bool& bombHit); void clearFrom(char gameBoard[][COLUMNS], int row, int column); bool boardCleared(char gameBoard[][COLUMNS]); bool hasAdjacentBomb(char gameBoard[][COLUMNS], int row, int column); void main() { srand(time(NULL)); char gameBoard[ROWS][COLUMNS] = {}; initializeGameBoard(gameBoard); displayGameBoard(gameBoard); bool bombHit = false; while(!boardCleared(gameBoard) && !bombHit) { move(gameBoard, bombHit); displayGameBoard(gameBoard); } if(bombHit) { cout << "You lose" << endl; } else { cout << "You Win" << endl; } } void initializeGameBoard(char gameBoard[][COLUMNS]) { for(int row = 0; row < ROWS; row++) { for(int column = 0; column < COLUMNS; column++) { gameBoard[row][column] = DEFAULT; } } for(int i = 0; i < BOMB_COUNT; i++) { int randomRowIndex = rand() % ROWS; int randomColumnIndex = rand() % COLUMNS; if(gameBoard[randomRowIndex][randomColumnIndex] != BOMB) { gameBoard[randomRowIndex][randomColumnIndex] = BOMB; } else { i--; } } } void move(char gameBoard[][COLUMNS], bool& bombHit) { int row; char column; cout << "Row? "; cin >> row; row -= 1; cout << "Column? "; cin >> column; if(gameBoard[row][column -'A'] == BOMB) { bombHit = true; } else { //gameBoard[row][column -'A'] = EMPTY; clearFrom(gameBoard, row, column -'A'); } } bool boardCleared(char gameBoard[][COLUMNS]) { bool result = true; for(int row = 0; row < ROWS; row++) { for(int column = 0; column < COLUMNS; column++) { if(gameBoard[row][column] == DEFAULT) { result = false; } } } return result; } void displayGameBoard(char gameBoard[][COLUMNS]) { system("cls"); cout << " "; for(int i = 0; i < COLUMNS; i++) { cout << (char)('A' + i); } cout << endl; for(int row = 0; row < ROWS; row++) { cout << setw(3) << row + 1; for(int column = 0; column < COLUMNS; column++) { //if(gameBoard[row][column] == BOMB) //{ // cout << DEFAULT; //} //else { cout << gameBoard[row][column]; } } cout << endl; } } bool hasAdjacentBomb(char gameBoard[][COLUMNS], int row, int column) { bool result = false; int adjacentBombs= 0; adjacentBombs += ((gameBoard[row][column-1] == BOMB)?1:0); adjacentBombs += ((gameBoard[row][column+1] == BOMB )?1:0); adjacentBombs += ((gameBoard[row-1][column] == BOMB )?1:0); adjacentBombs += ((gameBoard[row+1][column] == BOMB )?1:0); adjacentBombs += ((gameBoard[row-1][column-1] == BOMB )?1:0); adjacentBombs += ((gameBoard[row+1][column+1] == BOMB )?1:0); adjacentBombs += ((gameBoard[row-1][column+1] == BOMB )?1:0); adjacentBombs += ((gameBoard[row+1][column-1] == BOMB)?1:0); if(adjacentBombs > 0) { result = true; gameBoard[row][column] = (char)('0' + adjacentBombs); } return result; } void clearFrom(char gameBoard[][COLUMNS], int row, int column) { //are the row and column on the game board if(row >= 0 && row < ROWS && column >= 0 && column < COLUMNS) { if(gameBoard[row][column] != EMPTY && gameBoard[row][column] != BOMB) { gameBoard[row][column] = EMPTY; if(!hasAdjacentBomb(gameBoard, row, column) ) { clearFrom(gameBoard,row, column - 1); clearFrom(gameBoard,row, column + 1); clearFrom(gameBoard,row-1, column); clearFrom(gameBoard,row + 1, column); } } } }